package com.marktotop.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.marktotop.entity.business.VaccinationSite;
import com.marktotop.error.SystemException;
import com.marktotop.response.ResultBean;
import com.marktotop.vo.business.SiteAndVaccsVO;
import com.marktotop.vo.business.VaccSitesVO;
import com.marktotop.vo.business.VaccineAndSitesVO;
import com.marktotop.vo.business.VaccineInSiteVO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author MarkToTop
 * @since 2021-07-12
 */
public interface IVaccinationSiteService extends IService<VaccinationSite> {

    /**
     * 分页展示所有接种点信息，模糊查询
     *
     * @param pageNum
     * @param pageSize
     * @param site
     * @return
     */
    ResultBean findSiteList(Integer pageNum, Integer pageSize, VaccinationSite site);


    /**
     * 添加接种地点信息
     *
     * @param site
     * @return
     */
    boolean addVaccinationSite(VaccinationSite site);


    /**
     * 编辑接种地点信息
     *
     * @param id
     * @return
     * @throws SystemException
     */
    VaccinationSite editVaccinationSite(Long id) throws SystemException;


    /**
     * 获取所有接种点列表，供疫苗下发使用
     *
     * @return
     */
    List<VaccSitesVO> findVaccinationSitesList();


    /**
     * 获取该接种地的所有疫苗信息
     *
     * @param id
     * @return
     */
    SiteAndVaccsVO getSiteVaccineList(Long id);


    /**
     * 查询所有拥有某一疫苗的接种地点信息
     *
     * @param id
     * @return
     */
    VaccineAndSitesVO getAllSiteByVid(Long id);


    /**
     * 删除接种地点信息
     *      前提:接种地无进行的预约信息，并且没有关联的疫苗
     *
     * @param id
     * @return
     * @throws SystemException
     */
    boolean removeVaccinationSite(Long id) throws SystemException;
}
